package com.Questions.DP;


/**
 * 粉刷房子
 */
public class leetcode256 {
    public int minCost(int[][] costs) {
        int m = costs.length;
        int n = costs[0].length;
        int[][] dp = new int[m][n];
        // dp[i][j] 表示i房子使用j颜色最少花费成本
        for (int i = 0; i < n; ++i) {// 第一行
            dp[0][i] = costs[0][i];
        }
        for(int i = 1; i < m; ++i){
            dp[i][0] = Math.min(dp[i-1][1],dp[i-1][2]) + costs[i][0];
            dp[i][1] = Math.min(dp[i-1][0],dp[i-1][2]) + costs[i][1];
            dp[i][2] = Math.min(dp[i-1][0],dp[i-1][1]) + costs[i][2];
        }

        return Math.min(Math.min(dp[m-1][0],dp[m-1][1]),dp[m-1][2]);

    }
}
